package com.chinatgl.latte.ec.main.cart;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;

import com.chinatgl.latte.app.AccountManager;
import com.chinatgl.latte.app.IUserChecker;
import com.chinatgl.latte.delegates.bottom.BottomItemDelegate;
import com.chinatgl.latte.ec.API;
import com.chinatgl.latte.ec.R;
import com.chinatgl.latte.ec.mode.Cart;
import com.chinatgl.latte.ec.params.MapUtil;
import com.chinatgl.latte.ec.sign.SignInDelegate;
import com.chinatgl.latte.net.NetRequest;
import com.chinatgl.latte.net.listener.onNetRquestListener;
import com.chinatgl.latte.util.json.Result;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.List;
import java.util.WeakHashMap;


/**
 * 文件描述:
 * 作者: Created by 杨伟乔 on 2017/8/10 0010.
 * 版本号: 1.0
 */

public class CartDelegate extends BottomItemDelegate {


    @Override
    public void onBindView(@Nullable Bundle savedInstanceState, View rootView) {

    }

    @Override
    public CharSequence getTitle() {
        return "购物车";
    }

    @Override
    public Object getContentView() {
        return R.layout.delegate_cart;
    }

    @Override
    public void initListener() {

    }

    @Override
    public void onLazyInitView(@Nullable Bundle savedInstanceState) {
        super.onLazyInitView(savedInstanceState);

        stateLayout.showContentView();

        /**
         * 获取购物车数据
         */

        AccountManager.checkAccount(new IUserChecker() {
            @Override
            public void onSignIn() {
                System.out.println("测试: 用户已经登录了");
                //显示购物车界面
                /**
                 * 1.获取参数
                 */
                WeakHashMap<String, Object> params = MapUtil.getParams();
                Type type = new TypeToken<Result<List<Cart>>>() {
                }.getType();
                NetRequest.post(API.CARTHOME, params, type, false, 0, new onNetRquestListener() {
                    @Override
                    public void requestdataFinish(String catalog, Object bean) {
                        System.out.println("测试: 网络访问成功");
                        if (bean != null) {
                            //判断对象是不是字符串
                            if (bean instanceof String) {

                                //如果返回的对象是字符串 说明解析的是错误的
                                stateLayout.showFailView();
                                return;
                            }
                            //如果不是字符串 强转为我们需要的对象
                            Result<List<Cart>> bean1 = (Result<List<Cart>>) bean;

                            if (bean1.getCode() == 0) {
                                //请求成功
                                //隐藏空的界面

                                List<Cart> result = bean1.getResult();

                                if (result == null || result.size() == 0) {
                                    System.out.println("测试: 加载空的界面和推荐列表");
                                    //如果集合数据是空的 加载空的界面和推荐列表
                                    getSupportDelegate().loadRootFragment(R.id.cart_content_container, new EmptyCartDelegate());

                                } else {
                                    //加载有购物车数据的界面
                                    System.out.println("测试: 加载有购物车数据的界面");

                                    getSupportDelegate().loadRootFragment(R.id.cart_content_container,   NoEmptyCartDelegate.create(result));
                                }
                            }
                        }


                    }

                    @Override
                    public void requestdataFailed(String msg, Throwable e) {
                        System.out.println("测试: 网络访问失败"+e);
                    }

                    @Override
                    public void requestComplete() {
                        System.out.println("测试: 网络访问完成");
                    }
                }, getActivity());

            }

            @Override
            public void onNotSignIn() {
                System.out.println("测试: 用户没有登录了");
                getParentDelegate().getSupportDelegate().start(new SignInDelegate());
            }
        });


    }


    @Override
    public void initData() {


    }
}
